package net.lgy.config;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.Exchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
@Slf4j
@Data
public class RabbitMQConfig {

    // 登录事件交换机
    private String loginEventExchange = "login.event.exchange";
    // 登录事件队列（用户注册免费流量包新增）
    private String loginFreeInitQueue = "login.event.queue";
    // 登录事件路由键
    private String loginEventRoutingKey = "login.event.routing.key";

    /**
     * 创建登录事件交换机（Topic类型，持久化，不自动删除）
     */
    @Bean
    public Exchange loginEventExchange(){
        return new TopicExchange(loginEventExchange, true, false);
    }

    /**
     * 创建登录事件队列（持久化，不排他，不自动删除）
     */
    @Bean
    public Queue loginEventQueue(){
        return new Queue(loginFreeInitQueue, true, false, false);
    }

    /**
     * 绑定：将登录事件队列绑定到登录事件交换机，指定路由键
     */
    @Bean
    public Binding loginEventBinding(){
        // 正确：第一个参数是队列名，第二个是类型QUEUE，第三个是交换机名
        return new Binding(loginFreeInitQueue,
                Binding.DestinationType.QUEUE,
                loginEventExchange,
                loginEventRoutingKey,
                null);
    }

}